Git相关命令

Git 命令大全

# 生成秘钥
ssh-keygen -t rsa -C "zhangsan@126.com"

# 配置本地主机的邮箱和姓名,因为git是分布式版本控制系统,所以每台机器都必须自报家门
git config --global user.email "zhangsan@126.com"
git config --global user.name "zhangsan"
# 查看所有本机配置
git config -l
# 查看本机配置邮箱
git config user.email
# 查看本机配置名字
git config user.name


# 删除远程仓库地址
git remote remove gitee 
# 绑定远程仓库并进行添加
git remote add gitee  https://gitee.com/kql789/kqltest.git  #即新的仓库地址
# 将本地分支与远程分支进行关联
git push --set-upstream gitee main
# 在本地新建一个txt文件
touch git.txt
git add git.txt
git commit -m "git命令测试"
# 查看本地当前分支
git branch
# 查看远程仓库分支
git branch -a
# 将本地文件推送到远程仓库
git push gitee main


# 创建一个新的分支,并在新的分支上新建text1.txt文件,并将其合并到主分支上
git branch demo_1
# 切换到新的分支上
git checkout demo_1
touch text1.txt
git add text1.txt
git commit -m "text1"
# 切换到主分支上
git checkout main
# 合并分支,将demo_1分支上的文件合并到main分支上
git merge demo_1
git push gitee


# 查看提交记录的哈希值
git log
# 若是嫌输出内容太多 可以用:
git log --pretty=oneline
# 随时掌握工作区的状态
git status 查看状态
# 查看修改后的内容
git diff file 


# 回退到上一个版本
git reset --hard HEAD^
# 回退到上100个版本
git reset --hard HEAD~100  # 相对引用使用 ^ 向上移动1个提交记录 使用^<num> 向上移动多个提交记录,如^3
# 回退到最新的版本
git reset --hard id
# 查看你的每一条命令
git reflog
#查看工作区和版本库里面最新版本的区别
git diff HEAD -- file 


# 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file。  最新版本: git restore file
# 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
# 第一步用命令
git reset HEAD <file> #就回到了场景1,  最新版本: git restore --staged file 
# 第二步按场景1操作。
# 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
# 情况1:在工作区做了修改,并未添加到暂存区,想撤销工作区的修改,用 git restore file;
# 情况2:在工作区做了修改,并用git add 添加到了暂存区,未提交;想撤销,分两步,1.先撤销暂存区的修改,用 git restore --staged file, 2.然后参考情况1撤销工作区的修改;
# 情况3:在工作区做了修改,且git add git commit添加并提交了内容,想撤销本次提交,直接用 git reset --hard HEAD^回退版本,即可保证工作区,暂存区,版本库都是上次的内容


# 从暂存区恢复工作区,
git resotre --worktree readme.txt
# 从master恢复暂存区 
git restore --staged readme.txt
# 从master同时恢复工作区和暂存区
git restore --source=HEAD --staged --worktree readme.txt

# 删除文件
# 情况一:工作区文件删除,无其他操作
rm test.txt
# 以下命令可恢复文件
git restore test.txt

# 情况二:工作区文件删除,版本库文件删除
rm test.txt
git rm test.txt
git commit -m "remove test.txt"
# 以下命令可恢复文件
git reset --hard HEAD^


# 要明白这4个概念,工作区(working tree),暂存区(index /stage),本地仓库(repository),远程仓库(Remote)

# 工作区Workspace:程序员进行开发(改动的地方) 是当前看到的。
# 说明:任何对象都是在工作区中诞生和被修改

# 暂存区Index/Stage .git 目录下的index文件,暂存区会记录git add添加我呢间的相关信息(文件名、大小、timestamp),不保存实体,通过id指向每个文件实体
# 说明:可以使用git status查看暂存区的状态。任何修改都是进入暂存区才开始被版本控制。

# 本地仓库(repository) 保存了对象被提交过的各个版本,比起工作区和暂存区的内容,他要更旧一些
# git commit 后同步index的目录到本地仓库,方便下一步通过git push 同步本地仓库与远程仓库
# 说明1:只有把修改提交到本地仓库,改修改才能在仓库中留下痕迹。
# 说明2:可以在任何地方新建本地仓库,只需要在目标目录下执行"git init" 指令,就会将此目录自动初始化为本地仓库,同时他会新建“.git"目录。

# 远程仓库(Remote)的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可以与本地仓库同步,也可能不同步,但是它的内容是最旧的。
# 说明:与协作者分享本地的修改,可以把他们push到远程仓库来共享。



# 是查看working tree与index的差别的。
git diff
# 是查看index与repository的差别的。
git diff --cached
# 是查看working tree和repository的差别的。其中:HEAD代表的是最近的一次commit的信息。
git diff HEAD
#综上所述:git diff 后面跟文件名称是是查看工作区(working tree)与暂存区(index)的差别的
# 查看本地仓库连接远程仓库
git remote -v
# 拉去仓库
git pull https://gitee.com/kql789/model_test.git
# 克隆仓库
# 语法: git clone <版本库的url> <本地目录名>
git clone https://gitee.com/kql789/model_test.git /User/text/text/

# git pull 与git clone的区别
# git clone 将远程仓库完完整整的克隆下来,本地无需初始化仓库,clone操作是一个从从到有的克隆操作。再次强调无需git clone
# git pull 是拉取远程仓库更新到本地仓库的操作,比如仓库仓库里面的文件内容有变化,需要把新内容下载下来,就可以使用git pull命令。事实上,
# git pull是相当于从远程仓库获取最新版本,然后在于本地分支merge(合并)

# 场景1:假设项目有以下分支,master、dev1、dev2、dev3、dev4,当前团队处于dev2分支,可能其他团队所属分支dev1或dev2修改了代码,
# 并合并到master分支,当前团队需要从master分支获取最新的代码,合并到本地。
git pull gitee master  # 执行此操作后,master分支的代码将会合并到本地当前分支,即dev2分支

# 场景2 拉取远程仓库指定分支并与本地分支进行,即拉取dev4分支与本地dev2进行合并
git pull gitee master:dev4
 
# 场景3,可以先下载在合并。先执行git fetch 再执行git merge。
# 这种方式更安全也更符合实际要求,因为可以在merge前,我们可以查看更新情况,根据实际情况再决定是否合并
git fetch  gitee master:dev4
git merge dev4



# git branch 相关命令
git branch       #查看本地所有分支
git branch -r    #查看远程所有分支
git branch -a    #查看本地和远程所有分支
git branch -d <branchname>   #删除本地分支
git branch -d -r <branchname> #删除远程分支 注:删除之后一定要push  例: git branch -d -r dev2 / git push gitee :dev2
git branch -m oldbranch newbranch #重命名分支 -M 为强制重命名
git branch -vv   #查看本地分支与远程分支的关联情况


# 本地分支与远程分支进行关联
git branch --set-upstream-to=gitee/远程分支名 本地分支名

# 创建远程分支并关联到远程分支
git push --set-upstream 远程主机名 本地分支名:远程分支名
git push --set-upstream gitee dev1:dev9
# 创建远程分支
# 方法1:直接在远程仓库创建,在本地pull
# 方法2: 语法git push 远程主机名 远程分支名 (注:远程分支名在本地必须存在才可以直接创建并push)


# 将本地分支数据push到远程分支上
git push 远程主机名 本地分支名:远程分支名
git push gitee dev1:dev8

# 如果当前分支与多个主机存在追踪关系,则可以使用 -u 选项指定一个默认主机,这样后面就可以不加任何参数使用git push
git push -u gitee master 
# (将本地的master分支推送到gitee主机,同时指定gitee为默认主机,后面就可以不加任何参数使用git push了,
# git push -u gitee master 相当于 git branch --set-upstream-to=gitee/master master(将远程仓库gitee的master分支与本地仓库master分支关联)加 git push gitee master)

# 删除远程分支
# 方法1
git push gitee :dev9 (推送一个空分支到远程分支,其实就相当于删除远程分支)   
# 方法2
git push gitee --delete xxx

# 强制推送s
git push --force gitee master

# 将分支复制合并到其他分支上
git rebase master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值