[工具] git/github

本文详细介绍了如何在Git中使用命令行别名、Phab与Git协同工作,包括提交代码、版本回退的多种场景和常见错误解决方案。重点展示了git commit、git reset、git stash等核心操作及其配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 参考资料

Git教程

1. git命令

1.1 git commit --amend

1.2 git config

1.3 git reset

git reset HEAD <file> # 如果发现错误,不想暂存的文件被git add进入索引之后,想回退取消
git reset HEAD^       # 回退所有内容到上一个版本    
git reset 052e        # 回退到指定版本
git reset --soft HEAD # --soft 参数用于回退到某个版本
git reset --hard HEAD # --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

1.4 git stash

git stash  # 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
           #比如下面的中间状态,通过git stash命令推送一个新的储藏,当前的工作目录就干净了
git stash apply          # 重新应用缓存的stash
git stash list           # 查看现有stash
git stash drop stash@{0} # 移除stash
git stash clear          # 删除所有缓存的stash
git stash show           # 查看指定stash的diff,后面可以跟着stash名字
git stash show -p        # 添加-p或--patch可以查看特定stash的全部diff

2. 配置git命令行别名

在家目录添加.gitconfig文件。此文件在创建git仓库时,一般是没有的,需要手动添加
配置.gitconfig文件

$ cd ~
$ vim .gitconfig

嵌入内容为:

[alias]
        sl = log --graph --decorate --pretty=oneline --abbrev-commit --all
        lg = log --color --graph --pretty=format:'%Cred%h%Creset %C(bold blue)<%an>%Creset ---%C(yellow)%d%Creset %s %Cgreen(%cr)' --abbrev-commit
        co = checkout
        st = status
        ci = commit
        br = branch
        df = diff
        ignore = update-index --assume-unchanged
        unignore = update-index --no-assume-unchanged

3. phab+git提交代码

3.1 整体步骤

git clone ssh://vcssh@phabricator.intern.yuansuan.cn/diffusion/57/scratch.git # 获取代码
git branch 或者 git br # 查看分支
git checkout -b T19295 或者git co -b T19295 或者arc feature T19295 # 新建与任务相关的分支
git status 或者git st # 查看代码状态,即修改了哪些文件
git diff 或者git df # 查看具体修改内容
git add .  # 后面有一个点,意思是将你本地所有修改了的文件添加到暂存区
git commit -m “add demo code” # 本地暂存的修改提交到版本库,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中
# 注:如果二次提交,则用git commit --amend
arc diff --only
git pull origin master --rebase  # 拉取最新代码,以防在提交过程中有其他小伙伴进行了新的提交
arc diff --only
arc land

3.2. 版本回退

场景0:当你修改了某个文件,但不想提交,但在提交其他文件时想保留当前修改,此时

# 将文件修改忽略
git update-index --assume-unchanged config.php

# 取消文件忽略
git update-index --no-assume-unchanged config.php

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

git checkout -- a.txt   # 该文件是已存在的文件,而非新添加的文件,如果不想要新添加的,删除即可

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步

git reset HEAD a.txt   # 回退某个文件
git checkout -- a.txt

场景3:已经提交了不合适的修改到本地版本库时,想要撤销本次提交

 git reset --hard HEAD^

场景4:已经提交,但某个文件不想被push,采用以下步骤

git sl # 查看提交
git reset --soft fa180ae06  # 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
                            # 注:git reset -–hard fa180ae06 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉
git restore --staged src/yuansuan.cn/onpremise/auth/dao/impl.go # 作用是将暂存区的文件从暂存区撤出,但不会更改文件
git restore  src/yuansuan.cn/onpremise/auth/dao/impl.go  # 表示将在工作空间但是不在暂存区的文件撤销更改

在这里插入图片描述
如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug

git stash # 将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后再使用git stash apply或者git stash pop将以前一半的工作应用回来。

4. 相关命令

git branch -d T19295 删除分支
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git remote add origin git@192.168.1.119:ndshow
git push origin master 将文件给推到服务器上 
git remote show origin 显示远程库origin里的资源 
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联 
git checkout --track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git rm 文件名(包括路径) 从git中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
---------------------------------------------------------
git remote add origin git@github.com:username/Hello-World.git
git push origin master 将本地项目给提交到服务器中
-----------------------------------------------------------
git pull 本地与服务器端同步
-----------------------------------------------------------------
git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
git push origin serverfix:awesomebranch
------------------------------------------------------------------
git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
git branch branch_0.1 master 从主分支master创建branch_0.1分支
git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
git checkout branch_1.0/master 切换到branch_1.0/master分支

5. 遇到的错误

错误1:

Baron Wang > 获取/提交代码 > image2020-9-1_9-32-54.png
解决方法:

arc list 查看提交状态---* 已接受 D16109: xxx
git status
git pull origin master --rebase
arc diff --only 
arc land --revision D16109

错误2:

Baron Wang > 获取/提交代码 > image2020-9-11_9-45-9.png
解决方法:

git pull origin master --rebase
arc diff --only 
arc land
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值