Git常用命令使用记录以及个人理解


简介

笔者最近开始接触git团队开发项目,因为对git并不熟悉,故作此随笔以防遗忘。

如有错误或者纰漏,请指教。

记录一个使用git的教学游戏网站https://learngitbranching.js.org/?locale=zh_CN

本文分成两个部分,上半部分为常用命令集合,下半部分为拉取和推送代码的完整步骤

 

常用命令

初始化本地仓库

git init 

添加/取消 关联远程仓库

git remote add origin +ssh路径 
git remote remove origin

查看当前连接的路径

git remote -v 

新建本地分支

git checkout -b <分支名> 
git checkout -b dev一般用于创建分支,若分支存在则切换分支 

新建远程分支&推送代码

git push origin <自己本地分支名>:<自己远程分支名> 
git push origin dev:dev

克隆代码

git clone -b <指定分支名> <远程仓库地址>
git clone -b dev https://gitee.com/xxx.git
若本地没有叫dev的分支,则会新建一个

查找提交版本信息

git log 

强制回溯版本

git reset --hard 

关于origin

这里提一下origin,origin就是远程仓库链接的别名

详细理解可以到-> https://www.zhihu.com/question/27712995/answer/39946123

拉取代码

git pull origin <远程分支名>:<本地分支名>
git pull origin dev:dev
//关于拉取他人代码时,推荐本地新建与远程分支同名的分支,拉取代码时,切换到对应分支,这样不会对自己分支造成影响
?
git push -u origin dev:dev
//关于-u的作用,使用git push -u origin dev:dev后,git会将你的本地分支dev与远程仓库分支做一个链接,下一次想要push的时候,就可以直接使用git push而后面不用跟参数,可以用来简化推送命令
?
git push -u origin dev:dev -f //强制提交到远程分支(不推荐不推荐不推荐强制操作,很容易出现奇奇怪怪的问题)

合并代码

git merge <被合并的分支名>   //记得先切换到自己进行合并操作分支 然后再去合并被合并的分支

 关于branch的操作

 

git branch            //列出本地已经存在的分支,并且在当前分支的前面用"*"标记  
git branch -r      //查看远程版本库分支列表 remote       git branch -a      //查看所有分支列表,包括本地和远程 all   git branch -d dev    //删除dev分支 delete

切换分支

git checkout dev  

关于提交(push)代码的常规流程

首先是将全部文件添加至暂存区

git add .  (注意是空格然后 .)

然后提交到本地仓库

git commit -m“备注”

如果你的代码版本是团队最新的代码,你可以跳过合并代码这一步

切换分支

git checkout dev
dev:这里一般指主分支,正常情况下主分支代码是最新的版本,你可以将dev换成你的团队中最新的分支名

在本地dev分支拉取最新代码

git pull <远程主机名> <远程分支名>:<本地分支名>

git pull origin dev:dev

也有使用fetch的方式,会在下文中具体阐述git fetchgit pull的区别

切换到自己分支

git checkout <自己分支名>

合并代码

git merge <被合并分支名>

最后推送本地代码到远程分支

git push origin <自己本地分支名>:<自己远程分支名>

 

关于拉取(pull)代码的常规流程

例如目前本地有分支a,b,本地a分支想要拉取远程b分支代码

首先切换到分支b

git checkout b

然后pull代码

git pull origin b:b  //第一个是远处分支,第二个是本地分支

切换到自己a分支

git checkout a

合并b分支代码

git merge b

这样做的好处是,万一拉取的有问题,不会对自己的代码造成影响(虽然有时不解决冲突就回不到自己分支 -_-|| )

 

关于git fetch和git pull的区别

git pull下来后会直接合并,容易出现问题

而git fetch下来的话,新的代码先不合并也不显示(保存在?待补充),可以先比较,再决定是否合并

具体优劣等我用几年再说(2021/11/28)

 

使用git fetch后,如何合并代码

方法1

git fetch origin <分支名>             //从远程分支下载到本地并新建一个分支
git log -p <本地分支名>.. origin/<远程分支名> //比较本地的仓库和远程参考的区别 ? 

git merge origin
/<分支名>           //把远程下载下来的代码合并到本地仓库,远程的和本地的合并

 

方法2

git fetch origin <远程分支名>:<新建本地分支名>  //从远程分支下载到本地并新建一个分支
?
git diff <新分支>                      //比较当前分支和新建分支的不同,这步之前应先切回你想要进行合并操作的分支
?
git merge <新分支>                     //合并新建分支到当前分支
?
git branch -d <新分支>                 //删除新建分支

 

方法3

git rebase (存疑,待补充/2021/11/28)