Pro Git 中文版(第二版)
git创建分支并上传文件流程
(git branch -a :显示远程所有分支)(如果想看远端的,先git fetch一下)
- 创建分支XXX:git branch XXX_branch
- 切换到分支: git checkout -b XXX_branch (第一次才需要-b)
- git add xxx_folder
- git commit -m “xxx is important”
- git push origin XXX_branch (只有push之后,别人才可以从远端分支看到你的文件修改)
git 配置:
启用默认的颜色设置可以使用如下命
git config --global color.ui true
1、为了解决冲突不得已采用回退版本的方法
(记得提前备份好,自己修改的文件)
git reflog:可以查看操作记录以及对应得版本号;
git reset --hard 版本号 :回退到该版本;
git reset --hard file:回退某一个文件
(git log 命令可以显示所有提交过的版本信息;加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息)
`git reset --hard origin/master`是一条git命令,意思是将当前分支的HEAD指针和工作目录回退到远程仓库的`origin/master`分支所指向的提交。 具体来说,这条命令会删除当前分支上的所有本地提交,将HEAD指针移动到`origin/master`所指向的提交,并将工作目录恢复到该提交的状态。这样做会导致本地的所有修改和提交都被丢弃,并且无法恢复。 使用这条命令的目的通常是要丢弃所有本地修改,重新从远程仓库的`origin/master`分支拉取最新的代码,并回到一个干净的状态。
2、不要轻易pull 某一整个分支到自己的分支上;
(会带来大量文件冲突,当你想commit或者再pull时)
3、创建分支并上传文件到分支:
- 创建分支XXX_branch:git branch XXX_branch
- (删除分支XXX_branch:git branch -d XXX_branch)
- 切换到分支: git checkout XXX_branch
- git add xxx_folder (添加变更文件到更新list)
- git commit -m “xxx is important” (提交更新list到repo)
- git push origin XXX_branch (把本地repo的改动推送到远程的XXX_branch分支上)
4、指定更新某文件
- git checkout jvp #指定更新分支
- git checkout 文件夹 #指定文件夹更新
- git checkout .* #更新当前文件夹下所有文件
其他常用命令
5、查看当前所在分支:git branch
6、git status
- git status 命令查看哪些文件处于什么状态。
- git status 命令的输出十分详细,但其用语有些繁琐。 Git 有一个选项可以帮你缩短状态命令的输出,这样可以以简洁的方式查看更改。 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种格式更为紧凑的输出。
- git status . :只看当前目录的文件状态
7、git上对同一个文件多人进行维护的流程(不知道有没有更好的方法)
9、git clone URL (从git repo中导出最新的完整database)
10、移动或重命名:git mv
11、比较文件的不同:git diff
12 , 删除: git rm
遇到冲突时:
只保留远端的文件:
1.先git pull 使本地的版本状态与远端同步;
git checkout --theirs origin/ABC ./lw01 (说明:拿出远端ABC分支 当前目录下的lw01文件夹)(用这个之前,最好先git pull一下)
只commit 某一个文件:git commit --m "mssage for commit" xxxx.file
git log filename: 可以看到fileName相关的commit记录
git log -p filename: 可以显示每次提交的diff
git log --pretty=oneline 文件名 :使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件
git clean :从你的工作目录中删除所有没有 tracked,没有被管理过的文件。
git rm filename:删除文件filename
Git add:常用操作
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add -u :/ 对整个分支起更新作用 (u: update)
git add -u . 只对当前目录起更新作用
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
比较文件的两个commit id的差别
git diff comit_id0 commit_id1 --(空格)filename
使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件
git log --pretty=oneline 文件名
可以显示每次提交的diff
git log -p filename
git submodule:
使用 git submodule ,你可以将一个外部项目添加为当前项目的子模块,并通过 Git 来跟踪和管理子模块的版本。
git子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。
简单点说,就是库中库,就是一个git repo1下面可以包含其他git repo2作为repo1下面的文件;
git submodule 的优点包括:
1. 模块化开发:允许将项目拆分为多个独立的模块,每个模块可以独立开发、版本控制和管理。
2. 复用代码:可以方便地共享和复用其他项目的代码,避免重复编写。
3. 版本控制:子模块的版本可以通过 Git 进行跟踪,方便管理和回滚。
4. 灵活性:可以在项目中灵活地引入和移除子模块,便于项目的扩展和维护。
git submodule 的缺点包括:
1. 复杂性:使用子模块增加了项目的复杂性,需要理解和管理多个独立的 Git 仓库。
2. 初始设置:添加子模块时需要进行一些初始设置,包括添加子模块命令和初始化子模块。
3. 潜在的冲突:当子模块和主项目的更改发生冲突时,可能需要手动解决冲突。
4. 依赖管理:子模块的依赖可能会引入额外的复杂性,需要确保子模块的版本与主项目兼容。
总的来说, git submodule 对于管理复杂项目或需要复用代码的项目非常有用,但需要注意其潜在的复杂性和管理成本。在决定是否使用 git submodule 时,需要权衡项目的需求和团队的技术水平。
git stash:
参考:git Stash详细介绍:git stash和git pop的详细用法 - 李帆同学 - 博客园