值得学习:校招新人们,这份Git操作指南请收好 - 掘金 (juejin.cn)
1.git init 初始化仓库
2. 连接远程仓库:git remote add origin xxxx
3. git status 查看本地仓库状态
4. 删除关联的远程仓库:git remote remove origin
5. git checkout +文件名 撤销该文件的修改
6. git checkout . 撤销所有文件的修改
7. git add . :添加到暂存区
8. git commit -m "备注" 提交到本地库
9. git push origin master(Wjd)向远程仓库推送本地仓库的改动
10. git push -u origin master(Wjd) -f 强制向远程仓库推送本地仓库的改动
11.使用以下命令将其他分支的代码合并到当前分支:git merge <branch>
如果想将A分支合并到B分支,就要先切换到B分支,然后执行命令:`git merge A`。
每次从gitlab拉取代码时,先:**************
1. git init
2. git add .
3. git commit -m 'feat: 备注'
4. git checkout -b master(有时候要)
5. git pull origin master --allow-unrelated-histories
6. git add .
7. git commit -m 'feat: 备注'
8. git push origin master
9. 处理冲突
10. 噢,冲突可以直接git checkout --theirs 文件夹名,下面的所有文件都可以解决
2.分支管理
# 1.查看所有的本地分支和远程分支
git branch -a
# 2.查看本地分支
git branch
# 3.创建并切换分支 (加-b表示创建并切换)
git checkout -b 分支名
# 4.切换回分支
git checkout 分支名
# 5.从主分支里创建新分支
git checkout master -b 新分支名
# 6.合并某分支到当前分支
git merge 分支名
# 7.删除分支
git branch -d 分支名
git branch -D 分支名 (强行删除分支)
解决冲突
# 情景一 提交或拉取时冲突
git stash
git pull
git stash pop
# 情景二 如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull
git reset --hard HEAD^
git pull origin master
# 注:origin master表示git的主分支
# 情景三 分支合并时冲突(当我们git merge 分支名 时)
1.git status (查看发生冲突的文件)
2.然后手动合并冲突
3.git add . (添加更改后的文件)
4.git commit -m 'xj' (提交)
推送到远程仓库
可以使用以下命令将本地指定分支推送到远程指定分支上:
git push origin <本地分支名>:<远程分支名>
可以使用以下命令将本地指定分支推送到与本地当前分支同名的远程分支上:
git push origin <本地分支名>
使用以下命令将本地当前分支推送到与本地当前分支同名的远程分支上:
git push
可以使用以下命令来将本地分支与远程同名分支相关联:
git push -u origin <本地分支名>
由于远程库是空的,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令为git push。
回退某个操作
# 1.查看命令历史
git reflog
# 2.根据commitID撤销某个操作
git reset --hard 某个commitId
查看ssh密钥
# 1.进入.ssh目录
cd ~/.ssh
# 2.查看id_rsa.pub文件
cat id_rsa.pub
和远程分支建立关联
git branch --set-upstream-to=origin/远程分支的名字 本地分支名
远程仓储
# 1.创建sshkey密钥
ssh-keygen -t rsa -C "youremail@example.com"
# 2.在远程仓库中添加ssh公钥
# 3.关联远程库
git remote add origin git@server-name:path/repo-name.git
# 4.第一次推送master分支的所有内容,此后只需要使用git push origin master即可推送最新修改
git push -u origin master
多人协作
# 1.查看远程仓储的详细信息
git remote -v
# 2.推送本地分支到远程仓库,
#1.如果发生冲突,用git pull试图合并,如果发生冲突则解决冲突,再进行推送
#2.如果git pull后提示no tracking information(没有追踪信息),则进行第四项,建立关联,之后pull,有冲突再合并
git push origin 本地分支名
# 3.在本地创建和远程分支对应的分支
git checkout -b 本地分支 origin/远程分支名
# 4.建立本地分支和远程分支的关联
git branch --set-upstream 本地分支名 origin/远程分支名
分支策略
1.master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
2.干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
3.每个人都有自己的分支,时不时地往dev分支上合并就可以了
补充:
# git fetch和git pull的区别
与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。
# 查看仓库当前的状态
git status
// 查看提交日志
git log
# 回退版本,在git中用HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本
git reset --hard HEAD^ 或
git reset --hard 3628164 (数字代表log里commit后面的id,只需要填前几位就可以)
# 窗口关闭后回退版本(git reflog用来记录你的每一次命令)
git reflog
# 工作区和暂存区
工作区就是你建立的能看见的目录,.git即为git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
# 撤销修改
1.直接丢弃工作区的修改,用命令git checkout -- file
2.修改添加到了暂存区,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作
git remote add origin xxxx
git add .
git commit -m 'xxx'
git pull origin logistics
git push origin logistics
问题解决
解决方法参考链接
如果原来在master分支上更新了数据,忘记在自己的分支上了,记得merge一下,
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories,即:
git pull --allow-unrelated-histories
fatal: refusing to merge unrelated histories