假设我有2个用户在同一个分支上工作(主)。
(我知道这不是一个好习惯,但它是一个例子)
第一位用户有什么:
git clone <repository_url>
cd myproject
touch file1.cpp
git add file1.cpp
git commit -m "file 1 creation"
第二位用户:
git clone <repository_url>
cd myproject
touch file2.cpp
git add file2.cpp
git commit -m "file 2 creation"
第一位用户:
git push origin master
第二位用户:
git pull
此时,git正在进行合并。 我正在开发不同的环境(Linux,Mac,Windows)。
有时,git会自动创建分支。在这种情况下,我在我的bash提示符前缀(在$之前)看到master | MERGING 有时,我什么也看不见。
所以我的问题是:当我进行合并操作时,git是否会创建分支?
由于
答案 0 :(得分:1)
执行git pull
与执行git fetch
后跟git merge
相同。在第二个用户合并结束时,Git将创建一个新的合并 commit ,但它本身不会创建一个新的分支。
您在控制台上看到的master|MERGING
只意味着Git正处于合并操作的中间。
答案 1 :(得分:0)
在您描述的步骤中,git pull
将远程分支(origin/master
)合并到本地master
分支中。正如Tim的回答所示,它会在您的本地master
分支上创建合并提交。
回答您的问题:两个分支都是在git clone
操作期间创建的。 git fetch
更新本地存储库中origin/master
的状态(到服务器上的当前状态)。
答案 2 :(得分:0)
它不会创建新分支。第二个用户(例如任何用户)将拥有master的本地副本。通过运行git pull,远程更改为fetched
和merged
。如果存在冲突的更改,则合并将失败。
最佳处理方式是,对于第二个用户来说:
git pull --rebase
这将拉出远程更改并将其应用于其本地提交之上,然后可以将其推送到远程Master。
答案 3 :(得分:0)
是的,git正在创建所谓的“合并提交”。
如果您想避免这种情况,每次拉动时都应该使用public boolean solution(int[] A, int k) {
int n = A.length;
for (int i = 0; i < n - 1; i++) {
if (!(A[i] == A[i + 1]) && !(A[i] == A[i + 1] - 1)) {
System.out.println(A[i] + "-->" + A[i + 1]);
return false;
}
}
if (A[0] != 1 || A[n - 1] != k) {
return false;
} else {
return true;
}
}
。这样git就可以“拉动”并跳过创建“marge commit”。
但是你应该记住,git pull --rebase
选项强迫你处理潜在的冲突。