学习笔记_Git
-
基本概念
-
Distributed version control system
-
Git Lifecycle
-
Working Directory
-
工作都在Working Directory做
-
git init --把当前目录变为一个working directory,这个命令会自动创建一个hidden的.git目录。
-
它可能也可能不被git tracking
-
Staging Area
-
从工作目录选择哪些文件要被git跟踪
-
git add 命令用来向staging area添加文件
-
有些临时文件不要添加到staging area中
-
Commit
-
commit文件到git repository中
-
-
Git本地有三个工作区域:工作目录(working directory),暂存区(stage/index), 资源库(Repository或git directory),如果再加上远程的git仓库(remote directory)就可以分为四个工作区域。四个区域的转换关系如下;
-
-
Git是怎么工作的
-
修改项目并commit后,会为修改的部分生成一个新的commit id。更旧的代码会被git保存,并可通过它被赋予的commit id访问。
-
所有的commit都绑定到一个branch上,最后的commit有一个叫HEAD的指针。
-
-
Git repository的缺省branch叫Master Branch。
-
Branch的工作流程
-
-
文件的四种状态:
-
Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过git add状态变为Staged
-
Unmodified:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中的完全一致。这种类型的文件有两种去处,如果他被修改,就变为Modified;如果使用git rm移出版本库,则变为Untracked。
-
Modified:文件已修改,但仅仅是修改,没进行其它的操作。这个文件也有两种去处,通过git add可以进入暂存staged状态;使用git checkout则丢弃修改,返回到Unmodified状态。这个git checkout即从库中取出文件,覆盖当前修改!
-
Staged: 暂存状态,执行git commit则将修改同步到库中。这时库中的文件与本地文件一致,又变为了Unmodified状态。执行git reset HEAD <filename>取消暂存,文件状态变为Modified。
-
Git常用命令
-
-
git init 在本地目录会创建一个隐藏的".git"目录,git信息都保存在该目录中。git clone同时也可以实现初始化的目的。
-
-
git status 查看working folder文件状态
-
git add 1.txt 添加git tracking(放入staging area)
-
git add . 添加当前目录所有内容到staging area
-
git commit -m "备注" 真正commit文件
-
git remote add origin "<URL to repository>" 向working folder添加远程git repository 远程仓库的名称推荐使用默认的名称 origin
-
git remote 列出所有的remote库
-
git push origin master
-
-
git clone <URL> 这个命令会创建一个目录,目录名是repository名字,下载所有的repository内容到这个目录。
-
git pull origin master 从远程仓库中获取最新版本
-
git pull <URL> 也行
-
-
git branch <name-of-new-branch> 创建一个新的Branch
-
git branch -D <branch-name> 删除一个branch
-
git branch 列出现有branch
-
多个分支并行执行,代码不冲突,同时存在多个版本。
-
git merge命令用来合并冲突分支
-
git checkout <branch-name> Switch到新的Branch,随着切换的分支的文件状态改变,在Windows Explorer中的文件目录也会相应改变
-
git checkout <commit-id> 也可以切换到某个commit版本上
-
git pull origin <branch-name> 提交这个branch变更到remote repository
-
git log 查看所有commit的历史
-
git stash 当你想切换分支,但又不像commit当前的变更时,可以用这个命令。如果untracked变更也想保存时,加-u参数。如果不做stash就切换,没commit的文件会在另一个branch中也被看到。
-
git stash -u 保存分支变更(包含untracked文件)
-
git stash pop 取回刚才保存的文件
-
git revert <commit-id> 撤销一个commit版本,同时创建一个新的commit-id, commit-id可以通过“git log”查询
-
git diff <old-commit-id> <new-commit-id> 比较两个commit-id之间的变化
-
git diff HEAD . 比较目前的head版本和当前修改的结果
git配置
-
查看git配置:git config -l
-
查看git系统配置:git config --system --list, 该配置其实在Git安装目录下etc目录中的gitconfig中 --system表示系统级
-
查看git全局配置:git config --global --list, 该配置其实在用户目录的.gitconfig中 --global表示登录用户的全局
-
这些配置可以通过编辑配置文件修改,也可以通过命令设置反映到配置文件中。
-
user.name和user.email要配置,告诉git远程服务器你是谁
-
git config --global user.name <username>
-
git config --global user.email <email-box>
忽略文件
-
有些时候,我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等。
-
在主目录下建立“.gitignore”文件,此文件有如下规则:
-
忽略文件中的空行或以#开头的行
-
可以使用linux通配符,*代表任意多个字符,?代表一个字符,方括号代表可选字符范围,大括号代表可选字符串等。
-
如果名称的最前面有一个感叹号,表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符“/”,表示要忽略的文件在此目录下,而子目录中的文件不忽略
-
如果名称的最后面是一个路径分隔符“/”,表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
-
样例文件:
|
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
*.class
*.log
*.lock
#package file #
*.jar
*.war
*.ear
target/
#idea
.idea/
*.iml
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
|
码云配置
-
设置本机绑定SSH公钥,实现免密码登录
-
-
将公钥信息public key打开拷贝到码云账户中,输入登录密码验证即可。
-
在码云上新建仓库
-
私有对外不可见
-
.gitignore可以选择java即可。在用上面的.gitignore文件更新一下。
-
克隆到本地
通过IDEA使用Git
-
可以把clone下来的目录拷贝到想要通过git进行管理的目录中,就可以对这个目录进行管理了。超级万能模式。
有道无术,术尚可求;有术无道,止于术。

浙公网安备 33010602011771号