git的常见用法

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

  1. rebase到不需要合并的分支
git rebase -i <id_3> // 此时会进入vim模式
  1. 此时vim中展示了id_3之前的所有的commit id
    并且每个id之前有pick字样,我们将第一个pick保留,其余都改成squash,保存并退出。例如:
pick <id_0>
squash <id_1>
squash <id_2>
  1. 修改commit备注
    这样git log就会只保留一个commit
  2. 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。