一、常见命令
1.git常用命令
HEAD 表示当前所在的分支节点
git rebase <branch> 将当前分支提交到branch分支上
Git checkout <branch>^ 切换到当前分支的最近一次提交的父提交
git checkout <branch>~n 切换到当前分支的最近n次提交的父提交
Git branch -f <branch1> <branch2> 将1分支强行指到2分支
Git reset <branch> 回退到某个分支
Git revert <branch(HEAD)> 将上述分支的之前提交作为新提交
二.注意事项
1. 流程
使用git init
进行初始化,此时位于工作区(git clone
也可以),git add
进入暂存区,git commit
进入仓库,git push
提交到远程仓库,本项目中使用git commit -s -m "feat: Add feat xyz (ADOS-1)"
-s 表示添加签名
1. 初始化项目
-
创建一个GitLab仓库,并将其克隆到本地:
git clone https://gitlab.com/yourusername/yourproject.git
2. 创建和切换分支
-
在本地创建一个新的分支以开始你的工作:
git checkout -b feature-name
-
开始在新分支上编写代码。
3. 提交更改
-
当你完成一部分工作后,提交更改到本地分支:
git add .
git commit -m "Add initial implementation of feature"
4. 拉取最新代码
-
在推送你的更改之前,确保从主分支拉取最新的代码:
git checkout main
git pull origin main
git checkout feature-name
5. 解决冲突(如果有的话)
-
如果有冲突,你需要手动解决这些冲突,然后再次提交更改。
6. 推送更改到远程分支
-
将你的更改推送到GitLab上的远程分支:
git push origin 本地分支名:远端分支名(若是名称一致可以直接用一个)
7. 创建合并请求(Merge Request, MR)
-
登录到GitLab,找到你的项目,选择“Merge Requests”。
-
点击“New Merge Request”,选择源分支(source branch)为你的功能分支,目标分支(target branch)通常为主分支或开发分支。
-
添加标题和描述,然后提交。
2.分支
方法一:
可以直接拉取该分支,名为branch1
git clone -b(--branch) name url
方法二:
git clone url
这样拉取时可以拉取整个main函数,然后切换到具体的分支
1.检查远程分支branch1
是否已经存在本地。如果之前没有拉取过这个分支,你需要先将远程的branch1
分支建立为一个新的本地分支:
该命令是在本地建立分支,并拉取分支
git checkout -b branch1 origin/branch1
2.如果branch1
分支已经被之前拉取过并且已经作为一个本地分支存在,那么你可以直接切换到它:
git checkout branch1
分支合并,首先切换分支
再使用git merge <branch> 能合并分支
这种情况会合并分支并进行创建新版本
3.解决多人合作分支冲突
若有人先提交,则需要先git pull下来
会发现有修改的地方,此时进行修改后,重新进行push
(1)拉取远程branch1分支的最新更改
git fetch origin branch1
(2) 合并远程branch1分支到你的本地分支
git merge origin/branch1
在这个步骤中,Git会尝试自动合并两个分支。如果在同一个文件的相同位置有冲突,Git将无法自动解决这些冲突,并会停止合并过程,标记出冲突的文件。
(3) 检查冲突
当Git报告冲突时,它会在冲突的文件中插入特殊的冲突标记。这些文件现在处于未合并状态,你可以在命令行中看到它们:
git status
(4) 解决冲突
手动编辑这些文件,删除冲突标记,并决定保留哪一方的更改,或者合并双方的更改。
git fetch origin
git checkout branch1
git merge origin/branch1
一旦你解决了所有冲突,你需要使用git add
命令来标记这些文件,告诉Git冲突已经被解决,并git merge
, git commit
,git push
若没有关联就git push origin branch
进行关联
4.版本回退
git reset --hard 版本号
5.推送到分支
git push
三、问题的解决方案
Git log --graph
首次建立仓库
Git init
Git add .
Git commit -m 'first commit'
Git remote add origin url (origin以后就对应url远程仓库,相当于给远程仓库起别名)
Git push -u origin master (推送本地master分支到url的master)
Git push -u origin dev(-u 就建立了链接)
回到家,clone下来
Git clone url (默认拉下来是master分支,但可以checkout到dev分支,这种情况默认是起别名origin)
Git checkout dev
改改改
Git push origin dev
在家开发了一半,到公司里要继续进行开发
Git pull origin dev(相当于fetch+merge,若有冲突进行打开合并)
每次只开发了一点,多次开发后需要进行合并
rebase变基
用法一:
Git rebase -i 版本号 (会将该版本号和之后的版本号进行合并)
Git rebase -i HEAD~3 (从当前HEAD开始找最近的三条记录进行合并)
用法二:
Git rebase 分支名称
用法三:
Git fetch origin dev
Git rebase origin/dev 防止合并分叉