什么是Git?
git是免费开源的版本管理工具
git基础命令包含一下几种
git clone # Bring a repository that is hosted somewhere like Github into a folder on your local machine.
git add # Track your files and change it in Git(add files).
git commit # Save your files in Git.
git push # Upload Git commits to a remote repo, like GitHub.
git pull # Download changes from remote repo to your local machine, the opposite of push.
git基本流程
PR (pull request) 拉入另一个分支的请求
origin指的是Git存储位置,master为分支
~/git push origin master
将本地仓库连接至远程仓库
~/git remote add origin git@someAddress.git
Git分支
查看所有分支
~/git branch # 查看所有分支
* master # '*'表示当前在哪个分支上
feature/feature-demo
切换分支
~/git checkout feature/feature-demo
创建分支
~/git checkout -b feature/feature-test
删除分支
~/git checkout -d feature/feature-test
回退
回退最新一次Commit
~/git reset HEAD~1
回退某次提交
~/git log # 查看提交记录
...hash1(HEAD)
last commit
...hash2
second commit
...hash3
third commit
~/git reset hash2
不仅回退, 还删除从那之后的提交
~/git log # 查看提交记录
...hash1(HEAD)
last commit
...hash2
second commit
...hash3
third commit
~/git reset --hard hash3
~/git log # 查看提交记录
...hash3(HEAD)
third commit
项目实战(Azure DevOps)
1. 远程创建feature分支
2. 如果远程新建了一个分支,本地没有该分支。可以利用:
git checkout --track origin/branch_name
这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。
(一定要把本地分支与远程分支关联起来)
3. 以feature/PBI2353-Task2356为例,执行git checkout --track origin/feature/PBI2353-Task2356此时git status会显示:
xxx.xxx@xxxx MINGW64 ~/source/repos/xxxx/PBI2353-Task2356/xxxxxxx (feature/PBI2353-Task2356)
$ git status
On branch feature/PBI2353-Task2356
Your branch is up to date with 'origin/feature/PBI2353-Task2356'.
nothing to commit, working tree clean
此时就可以在当前分支上进行开发了
git远程删除分支后,本地git branch -a 依然能看到的解决办法
使用 git branch -a
命令可以查看所有本地分支和远程分支(git branch -r
可以只查看远程分支)发现很多在远程仓库已经删除的分支在本地依然可以看到。
$ git branch -a
develop
* feature/base
main
remotes/origin/HEAD -> origin/main
remotes/origin/develop
remotes/origin/feature/base
remotes/origin/main
remotes/origin/remotes/origin/develop (该分支已经删除但依然显示)
使用命令 git remote show origin
,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。
$ git remote show origin
* remote origin
Fetch URL: http://gitlab.igskcloud.com/awesome-opa/opa-api-service-v2.git
Push URL: http://gitlab.igskcloud.com/awesome-opa/opa-api-service-v2.git
HEAD branch: main
Remote branches:
develop tracked
feature/base tracked
main tracked
refs/remotes/origin/remotes/origin/develop stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
develop merges with remote develop
feature/base merges with remote feature/base
main merges with remote main
Local refs configured for 'git push':
develop pushes to develop (up to date)
feature/base pushes to feature/base (up to date)
main pushes to main (up to date)
此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin
命令就可以删除那些远程仓库不存在的分支。
$ git remote prune origin
Pruning origin
* [pruned] origin/remotes/origin/develop
$ git branch -a
develop
* feature/base
main
remotes/origin/HEAD -> origin/main
remotes/origin/develop
remotes/origin/feature/base
remotes/origin/main
GIT强制还原本地和远程服务器一致
git fetch --all
git reset --hard origin/xxxx