1. 从远程拉取仓库到本地:
git clone [仓库地址]
// 拉取指定分支
git clone -b [分支名字] [仓库地址]
如果拉取失败,可能是因为缓存区不够大,可设置:
git config --global http.postBuffer 5242880000
查看远程仓库的地址:
git remote -v
生成ssh key
ssh-keygen -t rsa -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub
2. 查看状态
git status
git log (查看当前分支的提交记录)
3. 新建一个本地分支并将其推送到远程:
git branch [分支名字]
git checkout [分支名字]
git push origin [分支名字]:[分支名字]
或者
git branch --set-upstream tmp_dev origin/tmp_dev
或者 git push --set-upstream origin tmp_dev
查看仓库中所有远程分支的名字:
git branch -a
4. 修改文件并提交
git add 文件名或者文件夹名
git commit -m "注释"
git push
5. 删除untracked files
git clean -f
6. 删除已经上传到gitlab的文件:
rm file.txt
git rm file.txt
git commit -m "rm file"
git push
7. 删除一个分支:
git branch -d <BranchName> // 删除本地分支
git push origin --delete <BranchName> // 删除远程分支
8. 将master分支合并到dev分支:merge
// 将分支切换到master
git checkout master
//将代码pull到本地
git pull
//修改冲突
//提交到本地
git add .
git commit -m "merge"
//切换到你所在分支dev
git checkout dev
//merge
git merge master
//将本地内容push到dev分支
git push
或者
git fetch origin XXX(和本地库对应的远程仓库名)// 将远程库的更新拉到本地,注意这里拉下的更新不会自动合并到你的代码中
git stash //暂存当前的修改
git rebase origin/XXX(和本地库对应的远程仓库名)// 将fetch下来的更新合并到本地
git stash pop //把暂存的修改pop出来
git add + git commit + git push
9. 对比两个分支中文件的差异
git diff branch1 branch2 --stat //显示出所有有差异的文件列表
git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异
git diff branch1 branch2 //显示出所有有差异的文件的详细差异
10. 合并commit
git log 查看所有的commit id
举例:
<id_0>
<id_1>
<id_2>
<id_3>
我们想要把id_0到id_2合并成一个commit
- rebase到不需要合并的分支
git rebase -i <id_3> // 此时会进入vim模式
- 此时vim中展示了id_3之前的所有的commit id
并且每个id之前有pick字样,我们将第一个pick保留,其余都改成squash,保存并退出。例如:
pick <id_0>
squash <id_1>
squash <id_2>
- 修改commit备注
这样git log就会只保留一个commit - git push
11.删除一次commit
举例:
<id_0>
<id_1>
<id_2>
<id_3>
如果想删除commit<id_2>
git reset --hard <id_3>
git cherry-pick <id_1>
git cherry-pick <id_0>
git push
fork的仓库,同步其他fork仓库或者源仓库的代码(拉取,设置upstream, merge)
git clone xxx(fork仓库的地址)
git remote -v
git remote add upstream xxx(源项目的url地址)
git remote -v // 此时会出现origin和upstream两个地址
git fetch upstream // 从源分支获取最新你的代码
git checkout dev //切换到自己的分支
git merge upstream/master //将源项目的分支merge到自己的分支中
git push